package com.example.d2_buffered_stream;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 目标：完成出师表的案例
 */
public class Test {
    public static void main(String[] args) {
        // 1.创建一个字符输入缓冲流和字符输缓冲流
        try (
                BufferedReader br = new BufferedReader(new FileReader("day20-io\\src\\csb.txt"));
                BufferedWriter bw = new BufferedWriter(new FileWriter("day20-io\\src\\csb_copy.txt"))
        ) {
            // 2.创建一个集合用来存储每行数据
            List<String> data = new ArrayList<>();

            // 3.先从源文件读取一行数据,直到读到null为止,并存入到集合中
            String line;
            while ((line = br.readLine()) != null) {
                data.add(line);
            }

            // 4.对集合进行排序
            // Collections.sort(data); // 可以使用Collections.sort集合自带的工具类方法,默认就是按照首字符进行排序
            // 使用stream流实现
            // data.stream().sorted((s1, s2) -> s2.charAt(0) - s1.charAt(0)); // 降序排序
            data = data.stream().sorted().collect(Collectors.toList()); // 默认是升序排序

            // 5.把排序后的集合,依次写入到目标文件
            for (String s : data) {
                bw.write(s);
                // 每写一行就换行
                bw.newLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
